using System;
using System.Data;
using System.Data.Common;
using System.Collections.Generic;
using System.Xml;
using System.Collections;
using ACFramework;

namespace ACSeguridad
{
	public partial class EEmpresas
	{
		#region Campos
		
		private String m_empr_codigo;
		private String m_empr_desc;
		private String m_empr_direc;
		private String m_empr_telef1;
		private String m_empr_telef2;
		private String m_empr_fax;
		private String m_empr_ruc;
		private String m_empr_email;
		private String m_empr_basedatos;
		private Boolean m_empr_bdfija;
		private String m_empr_usrcrea;
		private DateTime m_empr_feccrea;
		private String m_empr_usrmod;
		private DateTime m_empr_fecmod;
		private Boolean m_nuevo;
		private Boolean m_modificado;
		private Boolean m_eliminado;

		private Hashtable m_hash;
		
		#endregion

		#region Constructores
		
			/// <summary>
			/// Inicializar una nueva instancia de la clase EEmpresas.
			/// </summary>
		public EEmpresas()
		{
			try
			{
				Object _obj = ACSeguridad.Properties.Resources.xmlEmpresas;
				XmlDocument _xml = new XmlDocument();
				_xml.LoadXml(_obj.ToString());
				if (m_hash == null) 
				{
					m_hash = new Hashtable();
					XmlNodeList cPlantilla = _xml.GetElementsByTagName("Tabla");
					XmlNodeList cCampos = ((XmlElement)cPlantilla[0]).GetElementsByTagName("Campos");
					XmlNodeList Campo = ((XmlElement)cCampos[0]).GetElementsByTagName("CCampo");
					foreach(XmlElement Item in Campo)
					{
						m_hash.Add(Item.InnerText.ToString(), new CCampo(Item.GetAttribute("xmlns"), (Item.GetAttribute("Identity") == "1"? true : false), (Item.GetAttribute("ForeignKey") == "1"? true : false), (Item.GetAttribute("PrimaryKey") == "1"? true : false)));
					}
				}
			}
			catch(Exception ex)
			{
				throw ex;
			}
		}

		#endregion

		#region Propiedades
		
		/// <summary>
		/// Gets or sets el valor de: EMPR_Codigo.
		/// </summary>
		public String EMPR_Codigo
		{
			get { return m_empr_codigo; }
			set
			{
				if (m_empr_codigo != null)
				{
					if (m_empr_codigo != value)
					{
						m_empr_codigo = value;
						OnEMPR_CodigoChanged(m_empr_codigo, EventArgs.Empty);
					}
				}
				else
				{
					m_empr_codigo = value;
					OnEMPR_CodigoChanged(m_empr_codigo, EventArgs.Empty);
				}
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_Desc.
		/// </summary>
		public String EMPR_Desc
		{
			get { return m_empr_desc; }
			set
			{
				if (m_empr_desc != null)
				{
					if (m_empr_desc != value)
					{
						m_empr_desc = value;
						OnEMPR_DescChanged(m_empr_desc, EventArgs.Empty);
					}
				}
				else
				{
					m_empr_desc = value;
					OnEMPR_DescChanged(m_empr_desc, EventArgs.Empty);
				}
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_Direc.
		/// </summary>
		public String EMPR_Direc
		{
			get { return m_empr_direc; }
			set
			{
				if (m_empr_direc != null)
				{
					if (m_empr_direc != value)
					{
						m_empr_direc = value;
						OnEMPR_DirecChanged(m_empr_direc, EventArgs.Empty);
					}
				}
				else
				{
					m_empr_direc = value;
					OnEMPR_DirecChanged(m_empr_direc, EventArgs.Empty);
				}
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_Telef1.
		/// </summary>
		public String EMPR_Telef1
		{
			get { return m_empr_telef1; }
			set
			{
				if (m_empr_telef1 != null)
				{
					if (m_empr_telef1 != value)
					{
						m_empr_telef1 = value;
						OnEMPR_Telef1Changed(m_empr_telef1, EventArgs.Empty);
					}
				}
				else
				{
					m_empr_telef1 = value;
					OnEMPR_Telef1Changed(m_empr_telef1, EventArgs.Empty);
				}
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_Telef2.
		/// </summary>
		public String EMPR_Telef2
		{
			get { return m_empr_telef2; }
			set
			{
				if (m_empr_telef2 != null)
				{
					if (m_empr_telef2 != value)
					{
						m_empr_telef2 = value;
						OnEMPR_Telef2Changed(m_empr_telef2, EventArgs.Empty);
					}
				}
				else
				{
					m_empr_telef2 = value;
					OnEMPR_Telef2Changed(m_empr_telef2, EventArgs.Empty);
				}
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_Fax.
		/// </summary>
		public String EMPR_Fax
		{
			get { return m_empr_fax; }
			set
			{
				if (m_empr_fax != null)
				{
					if (m_empr_fax != value)
					{
						m_empr_fax = value;
						OnEMPR_FaxChanged(m_empr_fax, EventArgs.Empty);
					}
				}
				else
				{
					m_empr_fax = value;
					OnEMPR_FaxChanged(m_empr_fax, EventArgs.Empty);
				}
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_RUC.
		/// </summary>
		public String EMPR_RUC
		{
			get { return m_empr_ruc; }
			set
			{
				if (m_empr_ruc != null)
				{
					if (m_empr_ruc != value)
					{
						m_empr_ruc = value;
						OnEMPR_RUCChanged(m_empr_ruc, EventArgs.Empty);
					}
				}
				else
				{
					m_empr_ruc = value;
					OnEMPR_RUCChanged(m_empr_ruc, EventArgs.Empty);
				}
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_Email.
		/// </summary>
		public String EMPR_Email
		{
			get { return m_empr_email; }
			set
			{
				if (m_empr_email != null)
				{
					if (m_empr_email != value)
					{
						m_empr_email = value;
						OnEMPR_EmailChanged(m_empr_email, EventArgs.Empty);
					}
				}
				else
				{
					m_empr_email = value;
					OnEMPR_EmailChanged(m_empr_email, EventArgs.Empty);
				}
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_BaseDatos.
		/// </summary>
		public String EMPR_BaseDatos
		{
			get { return m_empr_basedatos; }
			set
			{
				if (m_empr_basedatos != null)
				{
					if (m_empr_basedatos != value)
					{
						m_empr_basedatos = value;
						OnEMPR_BaseDatosChanged(m_empr_basedatos, EventArgs.Empty);
					}
				}
				else
				{
					m_empr_basedatos = value;
					OnEMPR_BaseDatosChanged(m_empr_basedatos, EventArgs.Empty);
				}
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_BDFija.
		/// </summary>
		public Boolean EMPR_BDFija
		{
			get { return m_empr_bdfija; }
			set
			{
				if (!m_empr_bdfija.Equals(value))
				{
					m_empr_bdfija = value;
					OnEMPR_BDFijaChanged(m_empr_bdfija, EventArgs.Empty);
				}
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_UsrCrea.
		/// </summary>
		public String EMPR_UsrCrea
		{
			get { return m_empr_usrcrea; }
			set
			{
				if (m_empr_usrcrea != value)
				{ m_empr_usrcrea = value; }
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_FecCrea.
		/// </summary>
		public DateTime EMPR_FecCrea
		{
			get { return m_empr_feccrea; }
			set
			{
				if (m_empr_feccrea != value)
				{ m_empr_feccrea = value; }
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_UsrMod.
		/// </summary>
		public String EMPR_UsrMod
		{
			get { return m_empr_usrmod; }
			set
			{
				if (m_empr_usrmod != value)
				{ m_empr_usrmod = value; }
			}
		}
		/// <summary>
		/// Gets or sets el valor de: EMPR_FecMod.
		/// </summary>
		public DateTime EMPR_FecMod
		{
			get { return m_empr_fecmod; }
			set
			{
				if (m_empr_fecmod != value)
				{ m_empr_fecmod = value; }
			}
		}
		/// <summary>
		/// Gets Nuevo.
		/// </summary>
		public Boolean Nuevo
		{
			get { return m_nuevo; }
		}
		/// <summary>
		/// Gets Modificado.
		/// </summary>
		public Boolean Modificado
		{
			get { return m_modificado; }
		}
		/// <summary>
		/// Gets Eliminado.
		/// </summary>
		public Boolean Eliminado
		{
			get { return m_eliminado; }
		}
		public Hashtable Hash
		{
			get{ return m_hash;  }
		}
		public static String Tabla
		{
			get{ return "Empresas"; }
		}
		public static String Esquema
		{
			get{ return "dbo"; }
		}

		
		#endregion

		#region Eventos
		
		public event EventHandler EMPR_CodigoChanged;
		public event EventHandler EMPR_DescChanged;
		public event EventHandler EMPR_DirecChanged;
		public event EventHandler EMPR_Telef1Changed;
		public event EventHandler EMPR_Telef2Changed;
		public event EventHandler EMPR_FaxChanged;
		public event EventHandler EMPR_RUCChanged;
		public event EventHandler EMPR_EmailChanged;
		public event EventHandler EMPR_BaseDatosChanged;
		public event EventHandler EMPR_BDFijaChanged;

		protected void OnEMPR_CodigoChanged(Object sender, EventArgs e)
		{
			if (EMPR_CodigoChanged != null)
			{
				EMPR_CodigoChanged(sender, e);
				ActualizarInstancia();
			}
		}
		protected void OnEMPR_DescChanged(Object sender, EventArgs e)
		{
			if (EMPR_DescChanged != null)
			{
				EMPR_DescChanged(sender, e);
				ActualizarInstancia();
			}
		}
		protected void OnEMPR_DirecChanged(Object sender, EventArgs e)
		{
			if (EMPR_DirecChanged != null)
			{
				EMPR_DirecChanged(sender, e);
				ActualizarInstancia();
			}
		}
		protected void OnEMPR_Telef1Changed(Object sender, EventArgs e)
		{
			if (EMPR_Telef1Changed != null)
			{
				EMPR_Telef1Changed(sender, e);
				ActualizarInstancia();
			}
		}
		protected void OnEMPR_Telef2Changed(Object sender, EventArgs e)
		{
			if (EMPR_Telef2Changed != null)
			{
				EMPR_Telef2Changed(sender, e);
				ActualizarInstancia();
			}
		}
		protected void OnEMPR_FaxChanged(Object sender, EventArgs e)
		{
			if (EMPR_FaxChanged != null)
			{
				EMPR_FaxChanged(sender, e);
				ActualizarInstancia();
			}
		}
		protected void OnEMPR_RUCChanged(Object sender, EventArgs e)
		{
			if (EMPR_RUCChanged != null)
			{
				EMPR_RUCChanged(sender, e);
				ActualizarInstancia();
			}
		}
		protected void OnEMPR_EmailChanged(Object sender, EventArgs e)
		{
			if (EMPR_EmailChanged != null)
			{
				EMPR_EmailChanged(sender, e);
				ActualizarInstancia();
			}
		}
		protected void OnEMPR_BaseDatosChanged(Object sender, EventArgs e)
		{
			if (EMPR_BaseDatosChanged != null)
			{
				EMPR_BaseDatosChanged(sender, e);
				ActualizarInstancia();
			}
		}
		protected void OnEMPR_BDFijaChanged(Object sender, EventArgs e)
		{
			if (EMPR_BDFijaChanged != null)
			{
				EMPR_BDFijaChanged(sender, e);
				ActualizarInstancia();
			}
		}
		
		#endregion

		#region Metodos
		
		public void Instanciar(ACEInstancia x_instancia)
		{
			switch (x_instancia)
			{
				case ACEInstancia.Consulta:
					this.m_nuevo = false;
					this.m_modificado = false;
					this.m_eliminado = false;
					break;
				case ACEInstancia.Nuevo:
					this.m_nuevo = true;
					this.m_modificado = false;
					this.m_eliminado = false;
					break;
				case ACEInstancia.Modificado:
					this.m_nuevo = false;
					this.m_modificado = true;
					this.m_eliminado = false;
					break;
				case ACEInstancia.Eliminado:
					this.m_nuevo = false;
					this.m_modificado = false;
					this.m_eliminado = true;
					break;
			}
		}
		public void ActualizarInstancia()
		{
			if (!m_nuevo)
			{
				if (!m_eliminado)
				{ Instanciar(ACEInstancia.Modificado); }
			}
		}
		
		#endregion
	}
}

